(SW Expert Academy) 함수의 기초 - 6319번 6320번 6321번 6323번 6324번

1번 - 6319번

  • 시간 : 1개 테스트케이스를 합쳐서 Python의 경우 1초
  • 메모리 : 힙, 정적 메모리 합쳐서 256MB 이내, 스택 메모리 1MB 이내

string 뒤집는 방법 2가지
내장함수 사용 -> “”.join(reverse(string))
문자 하나하나 잘라서 뒤집기 -> string[::-1]

def check_palindrome(w):
#if(w == ''.join(reversed(w))):
if(w == w[::-1]):
print("입력하신 단어는 회문(Palindrome)입니다.")
else:
print("입력하신 단어는 회문(Palindrome)이 아닙니다.")

word = input()
print(word)
check_palindrome(word)

2번 - 6320번

  • 시간 : 1개 테스트케이스를 합쳐서 Python의 경우 1초
  • 메모리 : 힙, 정적 메모리 합쳐서 256MB 이내, 스택 메모리 1MB 이내

Test case도 별로 없고… 문제와 입력값의 설명이 부실하니 출력값을 그냥 print해도 맞다고 할듯…
아마 가위바위보에서 이긴 사람의 이름을 출력해야하는게 원래 의도였지 않았을까 싶다.(주석 처리한 부분들)

#def RSP_game(name1, name2, x, y):
def RSP_game(x, y):
if(x == y):
print("비겼습니다!")
elif((x=='가위' and y=='바위') or (x=='바위' and y=='보') or (x=='보' and y=='가위')):
#print("{}가 이겼습니다!".format(name2))
print("{}가 이겼습니다!".format(y))
else:
#print("{}가 이겼습니다!".format(name1))
print("{}가 이겼습니다!".format(x))

Player1 = input()
Player2 = input()
h1 = input()
h2 = input()

#RSP_game(Player1, Player2, h1, h2)
RSP_game(h1, h2)

3번 - 6321번

  • 시간 : 1개 테스트케이스를 합쳐서 Python의 경우 1초
  • 메모리 : 힙, 정적 메모리 합쳐서 256MB 이내, 스택 메모리 1MB 이내

소수 정의에 충실하게 함수를 만들면 아래와 같다.
에라토스테네스의 체를 활용하는 방법은 두 번째 방법이다.

def is_prime(num):
for i in range(2, num):
if(num%i==0):
return False
return True

num = int(input())
if(is_prime(num)):
print("소수입니다.")
else:
print("소수가 아닙니다.")
n=1000
a = [False,False] + [True]\*(n-1) # 0,1은 소수가 아니고 나머지는 일단 True로 리스트 생성
primes=[] # 소수를 담을 리스트

for i in range(2,n+1):
if a[i]:
primes.append(i)
for j in range(2\*i, n+1, i): # 범위에서 합성수를 False로 전환
a[j] = False
print(primes)

4번 - 6323번

  • 시간 : 1개 테스트케이스를 합쳐서 Python의 경우 1초
  • 메모리 : 힙, 정적 메모리 합쳐서 256MB 이내, 스택 메모리 1MB 이내

재귀함수로도 풀 수 있지만 Memoization을 사용하면 O(n) 시간에 풀 수 있음

memo = {1:1, 2:1} #첫 번째와 두 번째는 1

def fibo(n):
if n not in memo:
memo[n] = fibo(n-1) + fibo(n-2)
return memo[n]

num = int(input())
fibo(num)

print("[", end='')
for i in range(1, num):
print("{}, ".format(memo[i]), end='')
print("{}]".format(memo[num]))

아래는 굉장히 python 다운 깔끔한 코딩방법

def fibonacci(n):
a, b = 1, 0
for i in range(n):
a, b = b, a + b
return b

5번 - 6324번

  • 시간 : 1개 테스트케이스를 합쳐서 Python의 경우 1초
  • 메모리 : 힙, 정적 메모리 합쳐서 256MB 이내, 스택 메모리 1MB 이내

set 자료형을 사용하면 중복값을 쉽게 제거할 수 있지만 index를 지원하지 않음 (이 문제에서 출력 형식에 맞추기 까다로움)
전역변수로 list를 하나 만들고 함수 안에서 변경값이 적용되도록 global 사용 (global 사용하지 않고 return 시킬 수도 있지만 배운 강의내용 활용)

li = [1, 2, 3, 4, 3, 2, 1]

# print(li)

# print(set(li))

unique_list = list()
def unique_value(li):
global unique_list
for i in range(len(li)):
num = li[i]
if num not in unique_list:
unique_list.append(num)

print(li)
unique_value(li)
print(unique_list)